Virtualized data presentation in a carousel panel

ABSTRACT

Embodiments are directed to displaying data items in a carousel display panel and to efficiently presenting virtualized data in a carousel display panel. In one example, a computer system accesses a list of data items that include at least a first data item and a last data item which are to be displayed in a carousel display panel. The computer system displays the selected portion of data items in the carousel display panel and receives a user input indicating that the last data item in the list is to be displayed in the carousel display panel. The computer system then rotates the data items displayed in the carousel display panel to the last data item. The last data item is thus displayed, along with at least a portion of a second-to-last data item and the first data item in the list.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.13/287,674 filed on Nov. 2, 2011, entitled “VIRTUALIZED DATAPRESENTATION IN A CAROUSEL PANEL,” which issued as U.S. Pat. No. ______on ______, and which application is expressly incorporated herein byreference in its entirety.

BACKGROUND

Computers have become highly integrated in the workforce, in the home,in mobile devices, and many other places. Computers can process massiveamounts of information quickly and efficiently. Software applicationsdesigned to run on computer systems allow users to perform a widevariety of functions including business applications, schoolwork,entertainment and more. Software applications are often designed toperform specific tasks, such as word processor applications for draftingdocuments, or email programs for sending, receiving and organizingemail.

Most software applications include a graphical user interface (GUI) thatallows users to interact with the application. The GUI typicallyincludes various different icons, menus, list boxes or other items thatallows users to select and implement tools and settings. In some cases,software application GUIs may be configured to present data items thatare available from a remote database. Those items are typicallydownloaded to the software application in bulk, and then made availableto the user for browsing and selection.

BRIEF SUMMARY

Embodiments described herein are directed to displaying data items in acarousel display panel and to efficiently presenting virtualized data ina carousel display panel. In one embodiment, a computer system accessesa list of data items that include at least a first data item, a lastdata item, and potentially one or more intervening data items which areto be displayed in a carousel display panel. The computer systemdisplays the selected portion of data items in the carousel displaypanel and receives a user input indicating that various data itemsincluding the last data item in the list are to be displayed in thecarousel display panel. The computer system then rotates the data itemsdisplayed in the carousel display panel to the last data item. The lastdata item is thus displayed, along with at least a portion of asecond-to-last data item and the first data item in the list.

In another embodiment, a computer system accesses a list of data itemsincluding at least a first data item and a last data item. The computersystem accesses a corresponding carousel display panel policy todetermine an appropriate panel size for the carousel display panel,wherein the panel size indicates how many data items are to be displayedin the panel. The computer system then loads into memory those dataitems that fit in the carousel display panel according to thepolicy-indicated panel size and displays at least a portion of thosedata items that were loaded into memory in the carousel display panel.Optionally, the computer system also receives a user input indicatingthat the last data item in the list is to be displayed in the carouseldisplay panel. The computer system then rotates the data items displayedin the carousel display panel to the last data item. The last data itemis thus displayed, along with at least a portion of a second-to-lastdata item and the first data item in the list.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

Additional features and advantages will be set forth in the descriptionwhich follows, and in part will be apparent to one of ordinary skill inthe art from the description, or may be learned by the practice of theteachings herein. Features and advantages of embodiments of theinvention may be realized and obtained by means of the instruments andcombinations particularly pointed out in the appended claims. Featuresof the embodiments of the present invention will become more fullyapparent from the following description and appended claims, or may belearned by the practice of the invention as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

To further clarify the above and other advantages and features ofembodiments of the present invention, a more particular description ofembodiments of the present invention will be rendered by reference tothe appended drawings. It is appreciated that these drawings depict onlytypical embodiments of the invention and are therefore not to beconsidered limiting of its scope. The embodiments of the invention willbe described and explained with additional specificity and detailthrough the use of the accompanying drawings in which:

FIG. 1 illustrates a computer architecture in which embodiments of thepresent invention may operate including displaying data items in acarousel display panel and efficiently presenting virtualized data in acarousel display panel.

FIG. 2 illustrates a flowchart of an example method for displaying dataitems in a carousel display panel.

FIG. 3 illustrates a flowchart of an example method for efficientlypresenting virtualized data in a carousel display panel.

FIGS. 4A and 4B illustrate embodiments of a carousel display panel.

FIG. 5 illustrates an alternative embodiment of a carousel displaypanel.

DETAILED DESCRIPTION

Embodiments described herein are directed to displaying data items in acarousel display panel and to efficiently presenting virtualized data ina carousel display panel. In one embodiment, a computer system accessesa list of data items that include at least a first data item and a lastdata item which are to be displayed in a carousel display panel. Thecomputer system displays the selected portion of data items in thecarousel display panel and receives a user input indicating that thelast data item in the list is to be displayed in the carousel displaypanel. The computer system then rotates the data items displayed in thecarousel display panel to the last data item. The last data item is thusdisplayed, along with at least a portion of a second-to-last data itemand the first data item in the list.

In another embodiment, a computer system accesses a list of data itemsincluding at least a first data item and a last data item. The computersystem accesses a corresponding carousel display panel policy todetermine an appropriate panel size for the carousel display panel,wherein the panel size indicates how many data items are to be displayedin the panel. The computer system then loads into memory those dataitems that fit in the carousel display panel according to thepolicy-indicated panel size and displays at least a portion of thosedata items that were loaded into memory in the carousel display panel.Optionally, the computer system also receives a user input indicatingthat the last data item in the list is to be displayed in the carouseldisplay panel. The computer system then rotates the data items displayedin the carousel display panel to the last data item. The last data itemis thus displayed, along with at least a portion of a second-to-lastdata item and the first data item in the list.

The following discussion now refers to a number of methods and methodacts that may be performed. It should be noted, that although the methodacts may be discussed in a certain order or illustrated in a flow chartas occurring in a particular order, no particular ordering isnecessarily required unless specifically stated, or required because anact is dependent on another act being completed prior to the act beingperformed.

Embodiments of the present invention may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentinvention also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. Such computer-readable media can be any available media thatcan be accessed by a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions inthe form of data are computer storage media. Computer-readable mediathat carry computer-executable instructions are transmission media.Thus, by way of example, and not limitation, embodiments of theinvention can comprise at least two distinctly different kinds ofcomputer-readable media: computer storage media and transmission media.

Computer storage media includes RAM, ROM, EEPROM, CD-ROM, solid statedrives (SSDs) that are based on RAM, Flash memory, phase-change memory(PCM), or other types of memory, or other optical disk storage, magneticdisk storage or other magnetic storage devices, or any other mediumwhich can be used to store desired program code means in the form ofcomputer-executable instructions, data or data structures and which canbe accessed by a general purpose or special purpose computer.

A “network” is defined as one or more data links and/or data switchesthat enable the transport of electronic data between computer systemsand/or modules and/or other electronic devices. When information istransferred or provided over a network (either hardwired, wireless, or acombination of hardwired or wireless) to a computer, the computerproperly views the connection as a transmission medium. Transmissionsmedia can include a network which can be used to carry data or desiredprogram code means in the form of computer-executable instructions or inthe form of data structures and which can be accessed by a generalpurpose or special purpose computer. Combinations of the above shouldalso be included within the scope of computer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media to computerstorage media (or vice versa). For example, computer-executableinstructions or data structures received over a network or data link canbe buffered in RAM within a network interface module (e.g., a networkinterface card or “NIC”), and then eventually transferred to computersystem RAM and/or to less volatile computer storage media at a computersystem. Thus, it should be understood that computer storage media can beincluded in computer system components that also (or even primarily)utilize transmission media.

Computer-executable (or computer-interpretable) instructions comprise,for example, instructions which cause a general purpose computer,special purpose computer, or special purpose processing device toperform a certain function or group of functions. The computerexecutable instructions may be, for example, binaries, intermediateformat instructions such as assembly language, or even source code.Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, pagers, routers, switches, and the like. The invention may also bepracticed in distributed system environments where local and remotecomputer systems that are linked (either by hardwired data links,wireless data links, or by a combination of hardwired and wireless datalinks) through a network, each perform tasks (e.g. cloud computing,cloud services and the like). In a distributed system environment,program modules may be located in both local and remote memory storagedevices.

FIG. 1 illustrates a computer architecture 100 in which the principlesof the present invention may be employed. Computer architecture 100includes carousel display panel 110. The carousel display panel may bepart of a software application or operating system running on a computersystem. The computer system may be any type of local or distributedcomputer system including a cloud computing system. The computer may runa plurality of different software applications. Each application mayhave its own user interface. The user interface (UI) allows a user tointeract with the software application. For instance, user 105 may sendinput 106 to a user interface to select various different icons, menus,toolbars, listboxes or other items on the UI. When selected, these itemstrigger certain types of functionality provided by the application.

In some cases, software applications (or an operating system) maydisplay data items in a carousel fashion. For instance, carousel displaypanel 110 may display data items 134, 133 and 132. Data item 132 maycorrespond to a first data item in a list of data items 131. This listof data items may be stored on data store 130. Data store 130 may be alocal data store that is on the same computer system as the carouseldisplay panel, or may be a remote data store such as a database or otherdata server. The data items in the list of data items may be arranged inany of a number of different manners. For instance, the data items maybe arranged alphabetically, by date, by type, by group or by any otherform of organization. The data items are arranged in the list from thefirst data item 132 to the last data item 133.

When the carousel display panel initially displays the list of dataitems 131, typically the first data item will be displayed, followed bythe second data item, and so on. The second data item may be placed tothe right of the first data item, and the third data item to the rightof the second, and so on. Eventually, after scrolling, swiping (e.g.with a gesture on a touchscreen), or otherwise navigating to the end ofthe list of data items, the last data item 133 will be displayed. In thecarousel display panel 110, the first data item may be displayedseamlessly after the last data item. Thus, if a user were scrolling tothe right to view the data items of the data list (so that the dataitems moved left-to-right on the screen), and the carousel display panelwere configured to display three data items at a time, the carousel maydisplay the first data item 132, the last data item 133 and thesecond-to-last data item 134. If the user were to scroll more to theright, the last data item would be displayed, followed by the first dataitem and then the second data item. Thus, the data items can benavigated seamlessly from the first to the last, in a carousel fashion.This process will be described in greater detail below with regard tomethods 200 and 300 of FIGS. 2 and 3, respectively.

In view of the systems and architectures described above, methodologiesthat may be implemented in accordance with the disclosed subject matterwill be better appreciated with reference to the flow charts of FIGS. 2and 3. For purposes of simplicity of explanation, the methodologies areshown and described as a series of blocks. However, it should beunderstood and appreciated that the claimed subject matter is notlimited by the order of the blocks, as some blocks may occur indifferent orders and/or concurrently with other blocks from what isdepicted and described herein. Moreover, not all illustrated blocks maybe required to implement the methodologies described hereinafter.

FIG. 2 illustrates a flowchart of a method 200 for displaying data itemsin a carousel display panel. The method 200 will now be described withfrequent reference to the components and data of environment 100.

Method 200 includes an act of accessing a list of one or more data itemscomprising at least a first data item and a last data item, wherein atleast a selected portion of the data items are to be displayed in acarousel display panel (act 210). For example, the carousel displaypanel 110 may access the list of data items 131 which includespotentially any number of data items. The list of data items minimallyincludes a first data item 132 and a last data item 133. Some of thedata items will be displayed on the carousel display panel. Those dataitems displayed in the carousel panel may include the first and/or lastdata items, or may include neither the first nor last data items andinclude only intervening data items. Any combination of first, last orintervening data items may be shown.

For instance, when the user 105 initially accesses the list of dataitems 131, the first and possibly the second data items are shown. Asthe user scrolls, swipes or provides other navigation inputs 106, thecarousel display panel may move the data items left-to-right,bottom-to-top, or in any other manner that allows the user to navigatethe data items. As indicated by the rotation arrow in the carouseldisplay panel, the items may be rotated in any direction.

Method 200 includes an act of displaying the selected portion of dataitems in the carousel display panel (act 220). Thus, as mentioned above,the accessed data items may be displayed for the user 105 in thecarousel display panel. The user may be able to touch and interact withthe data items when the carousel display panel is displayed on atouchscreen. When displayed in a touchscreen, the user may swipe theirfinger right or left to rotate the carousel from left-to-right or fromright-to-left. The carousel display panel may be part of an operatingsystem, or may be integrated into a software application user interface.Accordingly, the data items may be operating-system-specific data items,or may be application-specific data items.

In embodiments where the carousel display panel 110 is displayed on atouchscreen, the velocity of the user's touchscreen input (i.e. theswipe) may be used to determine where in the list of data items thecarousel display panel is to stop rotating. For instance, a highvelocity swipe would cause the carousel display panel to be rotated athigher rate, and may increase the number of data items displayed (atleast temporarily) proportional to the velocity of the swipe.Alternatively, a low velocity swipe would cause the carousel displaypanel to be rotated at a lower rate, and would decrease the number ofdata items displayed. The carousel display panel may slowly come to astop on the data item to which the user navigated with the swipe. Insome embodiments, the velocity of the user's touchscreen input may beused to determine which data items are realized into memory and whichdata items are to be unloaded from memory. Thus, as will be explainedfurther below, only certain data items may be actually loaded intomemory and displayed. Other data items (e.g. those that would be skippeddue to a high velocity swipe) may not be virtualized (i.e. loaded intomemory), thus saving processing and data transfer costs for those items.

Next, method 200 includes an act of receiving a user input indicatingthat the last data item in the list is to be displayed in the carouseldisplay panel (act 230). Thus, for instance, the user 105 may navigateto the end of the data items in the list 131. The last data item 133 maythen be displayed on the carousel display panel 110. Depending on howmany data items are to be displayed at the same time, the last data itemmay be displayed between the second-to-last data item 134 and the firstdata item 132.

In some cases, many different data items will be displayedsimultaneously. In such cases, the last data item would be place betweendata items 134 and 132, as well as the third-to-last data item, thesecond data item and others. The number of data items displayed (orpartially displayed) in the carousel display panel may be customizableby the user. As such, the user may choose to have a large number of dataitems or a smaller number of data items being displayed at any one time.This number of data items may be dynamically adjusted and updated (up ordown) while the data items are being displayed. It should also be notedthat, at least in some cases, a separator item is displayed between thefirst data item and the last data items. The separator item may looklike another data item, but may be blank and contain no information, ormay be labeled as a separator item. Alternatively, a blank space orother item may be positioned between the first data item and the lastdata item to indicate to the user that the end of the list has beenreached and has been started over from the beginning.

Method 200 also includes an act of rotating the data items displayed inthe carousel display panel to the last data item, such that the lastdata item is displayed, along with at least a portion of asecond-to-last data item and the first data item in the list (act 240).Accordingly, after receiving a navigation input indicating that the lastdata item in the list 131 is to be displayed, the carousel display panel110 may display the last data item 133 between one or more other dataitems including items 134 and 132. In some cases, the carousel displaypanel may be rotated backwards from the first data item directly to thelast data 132 item of the list of data items 131. Each data item may bedynamically realized into memory when the data item is to be displayed.Thus, at least in some cases, only data items that are to actually bedisplayed are dynamically realized into memory.

The number of data items realized into memory may correspond to acustomizable window that encompasses a specified number of contiguousdata items. For instance, as shown in FIG. 5, the carousel display panel510 may display multiple different data items (wholly or partially),including first data item (item 1) 531 and last data item (item 10) 533.The customizable window may include items 8, 9, 10, 1, 2, 3, 4 and 5. Inthis embodiment, these data items within the customizable window arevirtualized 550 (or loaded into memory) by data virtualizing module 115.The customizable window includes a specified number of non-displayeddata items (item 8) before the data items that are currently displayedand a specified number of non-displayed data items (items 3, 4 and 5)after the data items that are currently displayed on the carouseldisplay panel. Those items not included in the customizable window (e.g.items 6 and 7) may be discarded.

The customizable window may be of an arbitrary size, and may beincreased or decreased based on available processing resources, based onend-user or developer input, or based on an optimal size determined byanalyzing past use. Furthermore, in some cases, the size of thecustomizable window may grow or shrink dynamically depending on theuser's navigation inputs (e.g. very fast inputs may lead to a smallerwindow, while slower, more moderate inputs may lead to a larger windowto ensure that data items are smoothly loaded as the user scrollsthrough the data items).

The customizable window may include more non-displayed data items to bedisplayed after the currently-displayed data items than displayed beforethe currently-displayed data items. These non-displayed items arepreloaded or prefetched into memory to anticipate the user's navigationmovements. Thus, for instance, it may be anticipated that the user willscroll through the items from left-to-right. Thus, fewer data items arepreloaded on the left side of the carousel display panel, and more dataitems are preloaded on the right side of the carousel display panel.

FIG. 3 illustrates a flowchart of a method 300 for efficientlypresenting virtualized data in a carousel display panel. The method 300will now be described with frequent reference to the components and dataof environment 100.

Method 300 includes an act of accessing a list of one or more data itemscomprising at least a first data item and a last data item, wherein atleast a selected portion of the data items are to be displayed in acarousel display panel (act 310). For example, the carousel displaypanel 110 may access the list of data items 131. The first data item 132will be displayed on the carousel display panel, along with at least aportion of a second data item. The carousel display panel may displaysubstantially any number of data items, depending on the size of thedata items, the size of the carousel display panel, and the size of theactual computer monitor or screen. Moreover, it should also be notedthat the data store 130 may include substantially any number of lists ofdata items, and that the carousel display panel may display data itemsfrom substantially any number of lists. The data items from these listsmay be displayed simultaneously or sequentially.

The carousel display panel may then access a corresponding carouseldisplay panel policy 120 to determine an appropriate panel size for thecarousel display panel (act 320). The panel size indicates how many dataitems are to be displayed at any one time in the display panel. In somecases, the policy may indicate that more data items are to be displayedin the panel (e.g. when the data items to be displayed are smaller). Inother cases, the policy may indicate that fewer data items are to bedisplayed in the panel (e.g. when the data items to be displayed arelarger). The policy may specify a different number of data items foreach software application, or for each user. Moreover, the number ofpartially-displayed data items may also be specified in the policy, orthe policy may indicate that partially-displayed data items are not tobe shown.

Method 300 next includes an act of loading into memory those data itemsthat fit in the carousel display panel according to the policy-indicatedpanel size (act 330). Thus, based on the determined size of the carouseldisplay panel 110 according to the policy, those data items that are tobe displayed are loaded into memory by data virtualizing module 115. Asindicated above, those data items that fit within a customizable window(as shown in FIG. 5) may be virtualized, in addition to those items thatare actually displayed in the display panel. The carousel display panelthen displays at least a portion of those data items that were loadedinto memory in the carousel display panel (act 340). The carouseldisplay panel may be arranged in various different manners includinghorizontally and vertically.

For example, as shown in FIG. 4A, carousel display panel 410A may bearranged in a vertical manner. The carousel display panel may displayvarious data items, either fully or partially. The carousel displaypanel of FIG. 4A illustrates a scenario where the list of data items 131includes ten data items. Items 1, 2, 3, 4, 9 and 10 are fully displayed,while data items 5 and 8 are partially displayed. Items 6 and 7 are notdisplayed and, at least in some cases, may not be virtualized. A space(potentially designed to look like a missing item) may be placed betweenthe first item of the list (item 1) 432A and the last item of the list(item 10) 433A. The space may indicate to the user that the end of thelist has been reached, and that the first of the list has wrapped backaround.

In FIG. 4B, the carousel display panel 410B is arranged horizontally.Data items 1 and 10 are fully displayed, while data items 2 and 9 arepartially displayed. A blank item 450 may be inserted between the firstitem of the list (item 1) 432B and the last item of the list (item 10)433B. The blank item may indicate to the user 105 that the end of thelist has been reached, and that the first of the list has wrapped backaround. In some embodiments, a user input 106 may be received indicatingthat the last data item in the list of data items 131 is to be displayedin the carousel display panel 410B. The data items may then be rotatedto the last data item so that the last data item is displayed, alongwith at least a portion of a second-to-last data item (item 9) and thefirst data item in the list according to a policy-indicated panel size.As the carousel display panel is rotated, data items may be continuallyand dynamically loaded and unloaded from memory (e.g. as items fall inand out of the customizable window). When the user stops providingnavigation inputs, the carousel display panel stops on the nextappropriate data item. This data item may be snapped into a spatiallycentered position to assist in providing an aesthetically appealingdisplay.

Accordingly, methods, systems and computer program products are providedwhich display data items in a carousel display panel. Moreover, methods,systems and computer program products are provided which efficientlypresent virtualized data in a carousel display panel.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges which come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

What is claimed is:
 1. A computer program product comprising one or morecomputer hardware storage device having stored computer-executableinstructions which, when executed by a computer system including atleast one processor, implement a method for displaying data items in acarousel display panel, the method comprising: an act of accessing alist of one or more data items comprising at least a first data item anda last data item, wherein at least a selected portion of the data itemsare to be displayed in a carousel display panel; an act of displayingthe selected portion of data items in the carousel display panel; an actof loading one or more additional data items into memory in anticipationof an anticipated user navigation, and such that the customizable windowsize will vary according to at least two different anticipated usernavigations; and an act of rotating the data items displayed in thecarousel display panel in a direction of the anticipated usernavigation, the data items including the first data item, the last dataitem and the one or more additional data items.
 2. The computer programproduct of claim 1, wherein the one or more additional data itemsinclude a plurality of data items.
 3. The computer program product ofclaim 1, wherein the carousel display panel is integrated into asoftware application user interface.
 4. The computer program product ofclaim 3, wherein the software application user interface allows usertouchscreen inputs to rotate the carousel display panel.
 5. The computerprogram product of claim 4, wherein the velocity of the user'stouchscreen input is used to determine where the in the list of dataitems the carousel display panel is to stop rotating.
 6. The computerprogram product of claim 4, wherein the velocity of the user'stouchscreen input is used to determine which data items are to beunloaded from the memory.
 7. The computer program product of claim 1,wherein those items not included in the customizable window arediscarded.
 8. The computer program product of claim 1, wherein thecustomizable window includes more non-displayed data items aftercurrently-displayed data items than before the currently-displayed dataitems.
 9. The computer program product of claim 1, wherein data itemsincluded in the customizable window are prefetched.
 10. The computerprogram product of claim 1, wherein as the carousel display panel isrotated, data items are continually and dynamically loaded and unloadedfrom memory.
 11. The computer program product of claim 1, wherein therotating carousel display panel stops on given data item which issnapped into a spatially centered position.
 12. A computing systemcomprising: one or more processors; system memory; and one or morecomputer-readable storage media having stored thereoncomputer-executable instructions that, when executed by the one or moreprocessors, causes the computing system to perform a method forefficiently presenting virtualized data in a carousel display panel,wherein the method includes the following: an act of accessing a list ofone or more data items comprising at least a first data item and a lastdata item, wherein at least a selected portion of the data items are tobe displayed in a carousel display panel; an act of displaying theselected portion of data items in the carousel display panel; an act ofloading one or more additional data items into memory in anticipation ofan anticipated user navigation, and such that the customizable windowsize will vary according to at least two different anticipated usernavigations; and an act of rotating the data items displayed in thecarousel display panel in a direction of the anticipated usernavigation, the data items including the first data item, the last dataitem and the one or more additional data items.
 13. A computer systemcomprising the following: one or more processors; system memory; one ormore computer-readable storage media having stored thereoncomputer-executable instructions that, when executed by the one or moreprocessors, causes the computing system to perform a method forefficiently presenting virtualized data in a carousel display panel, themethod comprising the following: an act of accessing a list of one ormore data items comprising at least a first data item and a last dataitem, wherein at least a selected portion of the data items are to bedisplayed in a carousel display panel; an act of accessing acorresponding carousel display panel policy to determine apolicy-indicated panel size for the carousel display panel, wherein thepolicy-indicated panel size indicates how many data items are to bedisplayed in the panel; an act of loading into memory those data itemsthat fit in the carousel display panel according to the policy-indicatedpanel size; an act of displaying at least a portion of those data itemsthat were loaded into memory in the carousel display panel; an act ofrotating the data items displayed in the carousel display panel inresponse to user input; and defining a customizable window that includesadditional data items that are to be loaded into memory with thecurrently displayed data items, the customizable window being sized toinclude: all of the data items currently displayed in the display panel;a first set of one or more data items that were already displayed beforethe act of rotating occurred, which is located on a first side of thecarousel display panel in a first direction relative to a newanticipated rotation; and a second set of one or more data items thatwill be displayed after the anticipated new rotation, which is locatedon a second side of the carousel display panel in a second directionrelative to the anticipated new rotation, wherein the second set of oneor more data items in the direction of the anticipated new rotationafter the currently displayed data items is greater than the first setof one or more data items.
 14. The computer system of claim 13, whereinthe first set of one or more data items includes a plurality of dataitems.
 15. The computer system of claim 14, wherein the carousel displaypanel is integrated into a software application user interface.
 16. Thecomputer system of claim 15, wherein the software application userinterface allows user touchscreen inputs to rotate the carousel displaypanel.
 17. The computer system of claim 16, wherein the velocity of theuser's touchscreen input is used to determine where the in the list ofdata items the carousel display panel is to stop rotating.
 18. Thecomputer system of claim 16, wherein the velocity of the user'stouchscreen input is used to determine which data items are to beunloaded from the memory.
 19. The computer system of claim 13, whereinthose items not included in the customizable window are discarded. 20.The computer system of claim 13, wherein the rotating carousel displaypanel stops on given data item which is snapped into a spatiallycentered position.